package user

import (
	"context"
	"github.com/gogf/gf/v2/errors/gerror"
	"goAdminV1/api/user/v1"
	"goAdminV1/internal/dao"
	"goAdminV1/utility"
)

func (c *ControllerV1) UserDetail(ctx context.Context, req *v1.UserDetailReq) (res *v1.UserDetailRes, err error) {
	// 根据用户ID查询用户信息
	user := &v1.UserDetailRes{}
	err = dao.CaUsers.Ctx(ctx).Where("id", req.ID).Scan(user)
	if err != nil {
		return nil, gerror.New("用户不存在")
	}

	// 构造返回结果
	res = &v1.UserDetailRes{
		ID:            user.ID,
		Username:      user.Username,
		Email:         user.Email,
		Avatar:        user.Avatar,        // 假设 UserInfo 中有 Avatar 字段
		RememberToken: user.RememberToken, // 假设 UserInfo 中有 RememberToken 字段
		DepartmentId:  user.DepartmentId,
		CreatorId:     user.CreatorId, // 假设 UserInfo 中有 CreatorId 字段
		Status:        user.Status,
		LoginIp:       user.LoginIp,                                // 假设 UserInfo 中有 LoginIp 字段
		LoginAt:       user.LoginAt,                                // 假设 UserInfo 中有 LoginAt 字段
		CreatedAt:     utility.FormatTimestamp(user.CreatedAt, ""), // 使用 Format 方法
		UpdatedAt:     utility.FormatTimestamp(user.UpdatedAt, ""),
		Roles:         user.Roles, // 假设 UserInfo 中有 Roles 字段
		Jobs:          user.Jobs,  // 假设 UserInfo 中有 Jobs 字段
	}

	// 如果 Roles 或 Jobs 为 nil，则设置为空数组
	if res.Roles == nil {
		res.Roles = []string{}
	}
	if res.Jobs == nil {
		res.Jobs = []string{}
	}

	return res, nil
}
